package com.zhang.file.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zhang.common.oss.minio.FileInfoVo;
import com.zhang.file.dto.FileSearchDTO;
import com.zhang.file.entity.Files;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springframework.web.multipart.MultipartFile;

import java.io.InputStream;
import java.util.List;

/**
 * <p>
 * 文件信息表 服务类
 * </p>
 *
 * @author 创世神
 * @since 2023-07-28
 */
public interface IFileService extends IService<Files> {


    /**
     * 获取文件
     *
     * @param bucket   桶
     * @param filePath 文件路径
     */
    InputStream getFile(String bucket, String filePath);

    /**
     * 把所有文件桶名称
     *
     * @return {@link List}<{@link String}>
     */
    List<String> getAllFileBucket() throws Exception;

    /**
     * 获取一个桶里面的所有文件
     *
     * @param searchDTO
     * @return {@link List}<{@link FileInfoVo}>
     * @throws Exception 获取失败异常
     */
    Page getFileFromBucket(FileSearchDTO searchDTO) throws Exception;


    /**
     * 上传图片
     * @param file    图像
     * @param fileInfo 文件信息
     * @return {@link Files}
     */
    Files uploadFile(MultipartFile file,FileInfoVo fileInfo);

    void delFileByFileId(List<Long> fileIds);
}
